using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Sirenix.OdinInspector;
using UnityEngine;

public class VLLMCharacter : MonoBehaviour
{
    [DisplayAsString(overflow:false)]
    public string characterDescription;
    public bool listenUserAudioInput = true;
    public Queue<LLMInteractPairsBase> cachedInteracts;

    public LLMInteractLinkBase curInteractEntry;
    private void Start()
    {
        //TODO:注册到某个局部空间中

        //TODO:初始化角色信息+描述,可以持久化
        characterDescription = @"店员角色名：林晓
        个人描述:林晓是一位充满活力与热情的打工少女，今年刚满20岁。作为“蜀香阁”的一员，用自己那灿烂的笑容和积极向上的态度给每一位顾客带来温暖的服务体验。林晓性格开朗乐观，对待工作认真负责，善于观察顾客的需求并提供贴心的服务，比如在寒冷的日子里为等待的客人送上一杯暖身的姜茶，或者是在小朋友面前展现出特别的耐心和温柔。尽管工作中偶尔也会遇到困难和挑战，但她总是能够以正面的心态去面对，并从中学习成长。林晓怀揣着成为一名优秀厨师的梦想，在“蜀香阁”工作的每一天，她都在向着这个目标努力前进，利用业余时间向店里的大厨请教烹饪技巧，不断积累经验，她的梦想是有一天能够开设属于自己的餐厅，将更多美味的地方菜肴分享给全世界的人们。林晓的存在让“蜀香阁”不仅仅是一个用餐的地方，更像是一个可以感受到家的温馨的小社区。"+"\n";
        curInteractEntry = new LLMIL_SelectionLinkSample();
    }

    private void OnListenUserAudioInput(string context)
    {
        if (!listenUserAudioInput) return;


    }
    public string DebugInput;
    [Button]
    public async void Interact(string text)
    {
        text = DebugInput;
        var seletion = await curInteractEntry.Select(text) as LLMCharacterInteractPairBase;
        seletion.character = this;
        seletion.interactContext = text;
        await seletion.Generate();

        // seletion.TryDeJson(out var pack);
    }

    public void Interact(VTouchInfo touchInfo)
    {

    }

    public string GetCachedInteracts()
    {
        var simpleCache = cachedInteracts.ToList().Select(x=>$"{x.name}:{x.interactContext}=>result:{x.response}").ToList();
        return simpleCache.ToLLMString();
    }


}

